home *** CD-ROM | disk | FTP | other *** search
- ;------------------------------------------------------------------------------
- ; .ss.
- ; `²²'
- ; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
- ; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
- ; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
- ; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
- ; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
- ; .sS²°$$$²²°"' d²°'
- ; .$$² .$$'
- ; $$$.,d$$'
- ; `²S$$S²'
- ;------------------------------------------------------------------------------
- ; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
- ;------------------------------------------------------------------------------
- ; PPE 3.O1 (Encryption type I) - Analysis ON - Postprocessing ON
- ;------------------------------------------------------------------------------
-
- Boolean BOOLEAN001
- Integer INTEGER016
- Integer INTEGER017
- Integer INTEGER018
- Integer INTEGER019
- Integer INTEGER020
- Integer INTEGER021
- Integer INTEGER022
- String STRING001
- String STRING002
- String STRING003
- String STRING004
- String TSTRING005(100)
- String STRING006
- String STRING007
- String STRING008
- String STRING009
- String STRING010
- String STRING011
- BigStr BIGSTR001
- Declare Procedure PROC001(Var Integer INTEGER002, Var Integer INTEGER003)
- Declare Procedure PROC002(Integer INTEGER009, Var Integer INTEGER010)
- Declare Procedure PROC003(Integer INTEGER001)
-
- ;------------------------------------------------------------------------------
-
- If ("" <> "HEAVY METAL RULEZ") Goto LABEL001
- BIGSTR001 = "666"
- PrintLn BIGSTR001
- :LABEL001
- Goto LABEL002
- End
-
- ;------------------------------------------------------------------------------
-
- Procedure PROC003(Integer INTEGER001)
-
- Select Case (INTEGER001)
- Case 1
- PrintLn "@X07Invalid function number"
- Case 2
- PrintLn "@X07File not found"
- Case 3
- PrintLn "@X07Path not found"
- Case 4
- PrintLn "@X07Too many open files"
- Case 5
- PrintLn "@X07Access denied"
- Case 6
- PrintLn "@X07Invalid handle"
- Case 7
- PrintLn "@X07Memory ctrl blocks destroyed"
- Case 8
- PrintLn "@X07Insufficient memory"
- Case 9
- PrintLn "@X07Invalid memory block address"
- Case 10
- PrintLn "@X07Invalid environment"
- Case 11
- PrintLn "@X07Invalid format"
- Case 12
- PrintLn "@X07Invalid access code"
- Case 13
- PrintLn "@X07Invalid data"
- Case 16
- PrintLn "@X07(error code not used)"
- Case 15
- PrintLn "@X07Invalid drive specified"
- Case 16
- PrintLn "@X07Can't remove current dir"
- Case 17
- PrintLn "@X07Not same device"
- Case 18
- PrintLn "@X07No more matching files"
- End Select
-
- EndProc
-
-
- ;------------------------------------------------------------------------------
-
- Procedure PROC001(Var Integer INTEGER002, Var Integer INTEGER003)
-
- Integer INTEGER004
- Integer INTEGER005
- Integer INTEGER006
- Integer INTEGER007
- Integer INTEGER008
-
- INTEGER004 = RegDI()
- INTEGER007 = RegES()
- INTEGER006 = RegDS()
- INTEGER005 = RegSI()
- INTEGER008 = RegF()
- DoIntr 33, 6400, 0, 0, 0, 0, INTEGER004, INTEGER008, INTEGER006, INTEGER007
- If (IsBitSet(RegF(), 0)) Then
- INTEGER003 = RegAL()
- Else
- INTEGER003 = 0
- Endif
- If (INTEGER003 == 32) INTEGER003 = 0
- INTEGER002 = RegAL()
-
- EndProc
-
-
- ;------------------------------------------------------------------------------
-
- Procedure PROC002(Integer INTEGER009, Var Integer INTEGER010)
-
- Integer INTEGER011
- Integer INTEGER012
- Integer INTEGER013
- Integer INTEGER014
- Integer INTEGER015
-
- INTEGER011 = RegDI()
- INTEGER014 = RegES()
- INTEGER013 = RegDS()
- INTEGER012 = RegSI()
- INTEGER015 = RegF()
- DoIntr 33, 3584, 0, 0, INTEGER009, 0, INTEGER011, INTEGER015, INTEGER013, INTEGER014
- If (IsBitSet(RegF(), 0)) Then
- INTEGER010 = RegAL()
- PROC003(INTEGER010)
- Else
- INTEGER010 = 0
- Endif
- If (INTEGER010 == 32) INTEGER010 = 0
-
- EndProc
-
- :LABEL002
- PrintLn "@X0BBIGDOS@X03(tm) 1.0"
- PrintLn "@X0BC@X03oded @X0Bb@X03y @X0BL@X03ars @X0BU@X03lrich @X08[DRiNK OR DiE] @X0Bi@X03n @X0B1@X03995"
- PrintLn
- PrintLn "@X0BT@X03ype '@X0Bexit@X03' @X0Bt@X03o @X0Br@X03eturn @X0Bt@X03o @X0BP@X03CBoard"
- PrintLn
- PrintLn
- Gosub LABEL012
- GetToken STRING008
- If (STRING008 <> "") Then
- STRING006 = Mid(STRING008, 1, 1)
- STRING002 = Strip(STRING008, " ")
- Else
- STRING006 = "C"
- STRING002 = "C:\"
- Endif
- Gosub LABEL011
- :LABEL003
- STRING004 = ""
- DispStr "@X0F" + STRING002
- InputStr "@X0F>@X07_", STRING004, 7, 128, Mask_Ascii(), 256 + 1024
- If ((Upper(STRING004) == "EXIT") || (Upper(STRING004) == "QUIT")) Goto LABEL005
- If (Strip(STRING004, " ") == "") Goto LABEL003
- If ((Upper(Mid(STRING004, 1, 2)) == "CD") || (Upper(Mid(STRING004, 1, 5)) == "CHDIR")) Then
- Gosub LABEL008
- Goto LABEL003
- Endif
- If ((Upper(Mid(STRING004, 1, 2)) == "MD") || (Upper(Mid(STRING004, 1, 5)) == "MKDIR")) Then
- Gosub LABEL009
- Goto LABEL003
- Endif
- If ((Upper(Mid(STRING004, 1, 2)) == "RD") || (Upper(Mid(STRING004, 1, 5)) == "RMDIR")) Then
- Gosub LABEL010
- Goto LABEL003
- Endif
- If ((Len(STRING004) == 2) && (Mid(STRING004, 2, 1) == ":")) Then
- STRING007 = STRING002
- STRING002 = STRING004 + "\"
- STRING006 = Upper(Mid(STRING002, 1, 1))
- Gosub LABEL011
- If (INTEGER022 <> 0) Then
- STRING002 = STRING007
- STRING006 = Mid(STRING002, 1, 1)
- Endif
- Goto LABEL003
- Endif
- If (Upper(Mid(STRING004, 1, 5)) == "TYPE ") Then
- If (Len(STRING004) <= 5) Then
- PrintLn "@X07Required argument missing"
- Goto LABEL004
- Endif
- STRING001 = Strip(Mid(STRING004, InStr(STRING004, " ") + 1, Len(STRING004)), " ")
- If (Exist(STRING001)) Then
- DispFile STRING001, 1
- Goto LABEL004
- Endif
- PrintLn "@X07File not found"
- :LABEL004
- Goto LABEL003
- Endif
- If ((STRING004 == "?") || (Upper(STRING004) == "HELP")) Then
- PrintLn " @X03 @X0BBigDos@X03(tm) @X0BFunctions@X03 "
- PrintLn ""
- PrintLn " @X0Fx: @X03- Change drive @X0FCLS @X03- Clear screen"
- PrintLn " @X0FCD @X03- Change directory @X0BDEL @X03- Delete file(s)"
- PrintLn " @X0BCOPY @X03- Copy file(s) @X0BDIR @X03- Directory"
- PrintLn " @X0FEXIT @X03- Exit BigDos @X0FMD @X03- Create directory"
- PrintLn " @X0BREN @X03- Rename file @X0FRD @X03- Remove directory"
- PrintLn " @X0FTYPE @X03- Type file @X0F? @X03- This help screen"
- PrintLn " @X0FVER @X03- Version info"
- PrintLn ""
- Goto LABEL003
- Endif
- If (Upper(STRING004) == "CLS") Then
- PrintLn "@X07@CLS@"
- Goto LABEL003
- Endif
- If (Upper(STRING004) == "VER") Then
- PrintLn "@X0BBIGDOS@X03<tm> 1.0"
- PrintLn "@X0BC@X03oded @X0Bb@X03y @X0BL@X03ars @X0BU@X03lrich @X0Bi@X03n @X0B1@X03995"
- PrintLn
- Goto LABEL003
- Endif
- If (InStr(STRING004, " ") <> 0) Then
- STRING009 = Mid(STRING004, 1, InStr(STRING004, " ") - 1)
- Else
- STRING009 = STRING004
- Endif
- STRING010 = ""
- If (Mid(Right(STRING009, 4), 1, 1) <> ".") Then
- If (Exist(STRING009 + ".COM")) STRING009 = STRING009 + ".COM"
- If (Exist(STRING009 + ".BAT")) STRING009 = STRING009 + ".BAT"
- If (Exist(STRING009 + ".EXE")) STRING009 = STRING009 + ".EXE"
- If (Exist(STRING009 + ".PPE")) STRING009 = STRING009 + ".PPE"
- Endif
- If (((Len(FileInf(STRING009, 9)) == 3) && (InStr(" COM EXE BAT PPE ", FileInf(STRING009, 9)) <> 0)) && Exist(STRING009)) STRING010 = FileInf(STRING009, 9)
- If (STRING010 == "PPE") Then
- STRING001 = "!" + STRING009
- If (InStr(STRING004, " ") <> 0) STRING001 = STRING001 + " " + Mid(STRING004, InStr(STRING004, " ") + 1, Len(STRING004))
- DispStr STRING001
- Else
- If (OnLocal() == 1) Gosub LABEL006
- Shell 0, INTEGER016, GetEnv("COMSPEC"), "/C " + STRING004 + " >" + "C:\" + "BIGDOS.TMP"
- If (OnLocal() == 1) Gosub LABEL007
- If (Exist("C:\" + "BIGDOS.TMP")) Then
- DispFile "C:\" + "BIGDOS.TMP", 1
- Delete "C:\" + "BIGDOS.TMP"
- Endif
- Endif
- Goto LABEL003
- :LABEL005
- Gosub LABEL013
- Stop
- :LABEL006
- For INTEGER017 = 1 To 23
- TSTRING005(INTEGER017) = ScrText(1, INTEGER017, 80, 1)
- Next
- INTEGER018 = GetX()
- INTEGER019 = GetY()
- Return
- :LABEL007
- For INTEGER017 = 1 To 23
- AnsiPos 1, INTEGER017
- DispStr TSTRING005(INTEGER017)
- AnsiPos INTEGER018, INTEGER019
- Next
- Return
- :LABEL008
- STRING003 = Strip(Mid(STRING004, InStr(STRING004, " ") + 1, Len(STRING004)), " ")
- If ((InStr(STRING004, " ") == 0) && (Upper(Mid(STRING004, 1, 2)) == "CD")) STRING003 = Strip(Mid(STRING004, 3, Len(STRING004)), " ")
- If (Mid(STRING003, 2, 1) <> ":") STRING003 = STRING006 + ":" + STRING003
- STRING007 = STRING002
- STRING002 = Upper(STRING003)
- STRING006 = Upper(Mid(STRING002, 1, 1))
- Gosub LABEL011
- If (INTEGER022 <> 0) Then
- STRING002 = STRING007
- STRING006 = Mid(STRING007, 1, 1)
- Endif
- Return
- :LABEL009
- STRING003 = Strip(Mid(STRING004, InStr(STRING004, " ") + 1, Len(STRING004)), " ")
- If ((STRING003 == "") || (InStr(STRING004, " ") == 0)) Then
- PrintLn "@X07Required argument missing"
- Return
- Endif
- If (Mid(STRING003, 2, 1) <> ":") STRING003 = STRING006 + ":" + STRING003
- STRING001 = Upper(STRING003)
- INTEGER022 = 0
- VarOff STRING001, INTEGER021
- VarSeg STRING001, INTEGER020
- DoIntr 33, 14592, 0, 0, INTEGER021, RegSI(), RegDI(), RegF(), INTEGER020, RegES()
- If (IsBitSet(RegF(), 0)) Then
- INTEGER022 = RegAX()
- PROC003(INTEGER022)
- Return
- Endif
- Return
- :LABEL010
- STRING003 = Strip(Mid(STRING004, InStr(STRING004, " ") + 1, Len(STRING004)), " ")
- If ((STRING003 == "") || (InStr(STRING004, " ") == 0)) Then
- PrintLn "@X07Required argument missing"
- Return
- Endif
- If (Mid(STRING003, 2, 1) <> ":") STRING003 = STRING006 + ":" + STRING003
- STRING001 = Upper(STRING003)
- INTEGER022 = 0
- VarOff STRING001, INTEGER021
- VarSeg STRING001, INTEGER020
- DoIntr 33, 14848, 0, 0, INTEGER021, RegSI(), RegDI(), RegF(), INTEGER020, RegES()
- If (IsBitSet(RegF(), 0)) Then
- INTEGER022 = RegAX()
- PROC003(INTEGER022)
- Return
- Endif
- Return
- :LABEL011
- INTEGER022 = 0
- VarOff STRING002, INTEGER021
- VarSeg STRING002, INTEGER020
- DoIntr 33, 15104, 0, 0, INTEGER021, RegSI(), RegDI(), RegF(), INTEGER020, RegES()
- If (IsBitSet(RegF(), 0)) Then
- INTEGER022 = RegAX()
- PROC003(INTEGER022)
- Return
- Endif
- INTEGER016 = Asc(STRING006) - 65
- PROC002(INTEGER016, INTEGER022)
- DoIntr 33, 18176, 0, 0, 0, INTEGER021, RegDI(), RegF(), INTEGER020, RegES()
- STRING002 = Chr(INTEGER016 + 65) + ":\" + STRING002
- STRING006 = Chr(INTEGER016 + 65)
- Return
- End
- :LABEL012
- VarOff STRING011, INTEGER021
- VarSeg STRING011, INTEGER020
- DoIntr 33, 18176, 0, 0, 0, INTEGER021, RegDI(), RegF(), INTEGER020, RegES()
- PROC001(INTEGER016, INTEGER022)
- STRING011 = Chr(INTEGER016 + 65) + ":\" + STRING011
- Return
- :LABEL013
- VarOff STRING011, INTEGER021
- VarSeg STRING011, INTEGER020
- DoIntr 33, 15104, 0, 0, INTEGER021, RegSI(), RegDI(), RegF(), INTEGER020, RegES()
- INTEGER016 = Asc(Mid(STRING011, 1, 1)) - 65
- PROC002(INTEGER016, INTEGER022)
- Return
-
- ;------------------------------------------------------------------------------
- ;
- ; Usage report (before postprocessing)
- ;
- ; ■ Statements used :
- ;
- ; 2 End
- ; 83 Goto
- ; 71 Let
- ; 43 PrintLn
- ; 61 If
- ; 2 DispFile
- ; 1 Delete
- ; 1 InputStr
- ; 10 Gosub
- ; 13 Return
- ; 1 GetToken
- ; 1 Shell
- ; 1 Stop
- ; 3 DispStr
- ; 8 DoIntr
- ; 5 VarSeg
- ; 5 VarOff
- ; 2 AnsiPos
- ; 3 EndProc
- ;
- ;
- ; ■ Functions used :
- ;
- ; 41 +
- ; 3 -
- ; 46 ==
- ; 11 <>
- ; 2 <
- ; 3 <=
- ; 4 >=
- ; 44 !
- ; 8 &&
- ; 9 ||
- ; 9 Len(
- ; 18 Upper()
- ; 26 Mid()
- ; 1 Right()
- ; 3 Chr()
- ; 2 Asc()
- ; 12 InStr()
- ; 7 Strip()
- ; 1 Mask_Ascii()
- ; 2 OnLocal()
- ; 1 GetEnv()
- ; 3 RegAL()
- ; 3 RegAX()
- ; 6 RegSI()
- ; 8 RegDI()
- ; 13 RegF()
- ; 2 RegDS()
- ; 8 RegES()
- ; 7 Exist()
- ; 1 GetX()
- ; 1 GetY()
- ; 3 FileInf()
- ; 1 ScrText()
- ; 5 IsBitSet()
- ;
- ;------------------------------------------------------------------------------
- ;
- ; Analysis flags : SI
- ;
- ; S - Shell to DOS ■ 5
- ; This may be normal if the PPE need to execute an external command,
- ; but may be actually anything... nasty (formating HD, rebooting,...)
- ; or usefull (sorting, maintenance,...). Check!
- ; ■ Search for : SHELL
- ;
- ; I - Interrupt call ■ 5
- ; This is rare in PPE... Although it may be a way to replace a PPE
- ; command by its fast interrupt equivalent. Be aware that an
- ; interrupt call may do anything... nasty (formating HD, rebooting,...)
- ; or usefull (fast screen i/o, hardware ressource access,...). Check!
- ; ■ Search for : DOINTR
- ;
- ;------------------------------------------------------------------------------
- ;
- ; Postprocessing report
- ;
- ; 2 For/Next
- ; 0 While/EndWhile
- ; 24 If/Then or If/Then/Else
- ; 1 Select Case
- ;
- ;------------------------------------------------------------------------------
- ; AEGiS Corp - Break the routines, code against the machines!
- ;------------------------------------------------------------------------------
-